package business.seguranca;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JOptionPane;

import business.sistema.ObjetoSistema;

public class Sistema extends ObjetoSistema
{
	private static final long serialVersionUID = 7764504264781077701L;
	private int codigo;
	private String chave;
	private Date dataAnterior;
	
	public void setCodigo(int codigo)
	{
		this.codigo = codigo;
	}

	public int getCodigo()
	{
		return codigo;
	}

	public void setChave(String chave)
	{
		this.chave = chave;
	}

	public String getChave()
	{
		return chave;
	}

	public void setDataAnterior(Date dataAnterior)
	{
		this.dataAnterior = dataAnterior;
	}

	public Date getDataAnterior()
	{
		return dataAnterior;
	}

	public boolean isExpirado() throws Exception
	{
		boolean expirado = false;
		Date dataExpiracao = null;
		Date dataHoje = new Date();
		Encriptacao encriptacao = new Encriptacao();
		
		String strDataExpiracao = encriptacao.decriptar(getChave());
		
		SimpleDateFormat formato2 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
		
		strDataExpiracao += " 23:59:59.999";
		
		dataExpiracao = formato2.parse(strDataExpiracao);
		
		// Verifica se a alteração na data de utilização do sistema
		if(dataAnterior == null)
		{
			dataAnterior = dataHoje;
		}
		else
		if(dataHoje.compareTo(dataAnterior) > 0)
		{
		
			// Verifica se a data da expiração é maior que a data atual.
			if(dataExpiracao.compareTo(dataHoje) > 0)
			{
				
			}
			else
			{
				JOptionPane.showMessageDialog(null, "Sistema expirado em " + strDataExpiracao + " ! \n\n Favor entrar em contato com o Administrador.");
				expirado = true;
			}
			
		}
		else
		{
			JOptionPane.showMessageDialog(null, "Verificar Data / Hora do sistema operacional! \n\n A data foi alterada deliberadamente!");
			expirado = true;
		}
		
		if(!expirado)
		{
			dataAnterior = dataHoje;
		}
		
		this.salvarSemConfirmacao();
		
		return expirado;
	}
}
